//package cn.ming.leo.utils;
//
//import java.lang.reflect.Field;
//import java.lang.reflect.Modifier;
//import java.math.BigDecimal;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.Set;
//
//public class NameUtils {
//	/**
//	 * 将驼峰式命名的字符串转换为下划线大写方式。如果转换前的驼峰式命名的字符串为空，则返回空字符串。</br>
//	 * 例如：HelloWorld->HELLO_WORLD
//	 * 
//	 * @param name
//	 *            转换前的驼峰式命名的字符串
//	 * @return 转换后下划线大写方式命名的字符串
//	 */
//	public static String underscoreName(String name) {
//		StringBuilder result = new StringBuilder();
//		if (name != null && name.length() > 0) {
//			// 将第一个字符处理成大写
//			result.append(name.substring(0, 1).toUpperCase());
//			// 循环处理其余字符
//			for (int i = 1; i < name.length(); i++) {
//				String s = name.substring(i, i + 1);
//				// 在大写字母前添加下划线
//				if (s.equals(s.toUpperCase()) && !Character.isDigit(s.charAt(0))) {
//					result.append("_");
//				}
//				// 其他字符直接转成大写
//				result.append(s.toUpperCase());
//			}
//		}
//		return result.toString();
//	}
//
//	/**
//	 * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空，则返回空字符串。</br>
//	 * 例如：HELLO_WORLD->HelloWorld
//	 * 
//	 * @param name
//	 *            转换前的下划线大写方式命名的字符串
//	 * @return 转换后的驼峰式命名的字符串
//	 */
//	public static String camelName(String name) {
//		StringBuilder result = new StringBuilder();
//		// 快速检查
//		if (name == null || name.isEmpty()) {
//			// 没必要转换
//			return "";
//		} else if (!name.contains("_")) {
//			// 不含下划线，仅将首字母小写
//			return name.substring(0, 1).toLowerCase() + name.substring(1);
//		}
//		// 用下划线将原始字符串分割
//		String camels[] = name.leolit("_");
//		for (String camel : camels) {
//			// 跳过原始字符串中开头、结尾的下换线或双重下划线
//			if (camel.isEmpty()) {
//				continue;
//			}
//			// 处理真正的驼峰片段
//			if (result.length() == 0) {
//				// 第一个驼峰片段，全部字母都小写
//				result.append(camel.toLowerCase());
//			} else {
//				// 其他的驼峰片段，首字母大写
//				result.append(camel.substring(0, 1).toUpperCase());
//				result.append(camel.substring(1).toLowerCase());
//			}
//		}
//		return result.toString();
//	}
//	
//	public static  Map<String,Object> underscoreNameAboutMap(Map<String, Object> map,Set<String> ignoreKeys){
//		Set<Map.Entry<String,Object>> entries = map.entrySet();
//        Map<String,Object> resultMap = new HashMap<String,Object>();
//        for (Map.Entry<String, Object> entry: entries) {
//        	if (ignoreKeys !=null && ignoreKeys.contains(entry.getKey())) {
//				continue;
//			}
//        	
//        	resultMap.put(camelName(entry.getKey()), entry.getValue());
//        }
//        return resultMap;
//	}
//	
//	public static Object mapToObject(Map<String, Object> map, Class<?> beanClass){  
//        Object obj=null;  
//        if (map == null) {  
//            return null;  
//        }  
//        try{  
//            obj = beanClass.newInstance();  
//            Field[] fields = obj.getClass().getDeclaredFields();  
//            for (Field field : fields) {  
//                int mod = field.getModifiers();  
//                if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {  
//                    continue;  
//                }  
//                field.setAccessible(true);
//                System.out.println(field.getType()+"----"+field.getName());
//                if (map.get(field.getName())==null) {
//					continue;
//				}
//                if (field.getType() ==BigDecimal.class ) {
//                	field.set(obj, new BigDecimal(map.get(field.getName()).toString())); 
////                	field.set(obj, new BigDecimal(map.get(field.getName()).toString())); 
//				}else if(field.getType() ==Integer.class){
//					field.set(obj, new Integer(map.get(field.getName()).toString())); 
//				}else{
//					field.set(obj, map.get(field.getName())); 
//				}
//                 
//            }  
//        }catch(Exception ex){  
//            ex.printStackTrace();  
//        }  
//        return obj;  
//    } 
//}
